/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestores.iteracao;

import gestores.iteracao.iteradores.IIterador;
import gestores.iteracao.manipuladores.IManipulador;
import java.io.File;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import kernel.Kernel;

/**
 * Classe GestorIteracao
 *
 * Descrição:
 *
 *
 * @author blaster
 */
public class GestorIteracao extends Observable implements Observer {

    private IManipulador manipulador;
    private IIterador iterador;
    private ArrayList<File> arquivosAIterar;

    public GestorIteracao(ArrayList<File> arquivos) {
        this.arquivosAIterar = arquivos;
    }

    public void startIteracao() {
        if (iterador != null) {
            if (manipulador != null) {
                iterador.setManipulador(manipulador);
                iterador.prepararIteracao();
                Thread t1 = new Thread(iterador);
                t1.start();
            } else {
                System.out.println("Erro! Manipulador não definido");
            }
        } else {
            System.out.println("Erro! Iterador não definido");
        }
    }

    public GestorIteracao() {
    }

    public void stop() {
    }

    public void setIterador(IIterador it) {
        this.iterador = it;
        this.iterador.addObserver(this);
    }

    public void setManipulador(IManipulador man) {
        this.manipulador = man;
    }

    public void update(Observable o, Object arg) {
        if(arg instanceof String){
            String msg = (String) arg;
            Kernel.getInstance().gestorJanelas.addLog(msg);
        }else if(arg instanceof Float){
            Kernel.getInstance().gestorJanelas.setDone((Float)arg);
        }else if(arg instanceof Boolean && ((Boolean)arg) == Boolean.FALSE){
                 Kernel.getInstance().gestorJanelas.clearListaArquivos();
        }

    }
}
